package jm.nj.demo22mian.apis;

import com.mysql.fabric.xmlrpc.base.Data;
import org.junit.Test;

import java.sql.*;


public class JdbcDemo_api1 {
    @Test
    public void demo() throws ClassNotFoundException, SQLException {
        //1.注册驱动
        /*
        * java.sql.Driver: jdbc提供驱动接口
        * com.mysql.jdbc.Driver： MySql提供的JDBC驱动接口的实现类
        * java.sql.DriverManager:JDBC提供的操作数据库的工具类，提供了 个注册驱动的方法registerDriver();
        *
        * com.mysql.jdbc.Driver类在被加载的时候，在静态代码块里进行了自我自测：
        *java.sql.DriverManager.registerDriver(new Driver());
        *我们可以使用DriverManager.registerDriver(new Driver());进行手动注册，但是我们不推荐使用这种方式， 原因有两个：
        *1. 硬编码，不利于后续的功能扩展和维护。 JDBC的目的就是使用一份Java代码操作不同的数据库，但是这种注册是写死了注册MySql的驱动，只能操作MySql。
         *    如果要操作其它数据库，必须更改源码，然后重新编译
         * 2. 注册了2次：驱动类被加载的时候自我注册一次，然后我们手动又注册一次
        * */
        Class.forName("com.mysql.jdbc.Driver");
        //java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());

        //2.连接数据库
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day22","root","123456");

        //3.创建sql执行平台
        Statement stmt = conn.createStatement();

        //4.执行sql
        ResultSet rs = stmt.executeQuery("select * from user");

        //5.处理执行结果
        while(rs.next()){
            Integer uid = rs.getInt("uid");
            String username = rs.getString("username");
            String password = rs.getString("password");
            Double salary = rs.getDouble("salary");
            Integer age = rs.getInt("age");
            Date registTime = rs.getDate("registTime");
            Timestamp lastupdate = rs.getTimestamp("lastupdate");
            System.out.println(uid+ "   "+username+ "     "+password+ "     "+salary+ "     "+age+ "        "+registTime+ "     "+lastupdate);
        }
        //释放资源
        rs.close();
        stmt.close();
        conn.close();
    }
}
